package view;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

import model.Convenio;
import model.Loja;
import model.Produto;
import model.TabelaTC;
import model.TabelaTaxasComissoesEmprestimo;
import model.Vinculacao;
import service.FilterService;

@ManagedBean(name = "vinculacaoBean")
@ViewScoped
public class VinculacaoBean implements Serializable {

	private static final long serialVersionUID = 2882190792194370472L;

	private List<Vinculacao> vinculacoes;
	private List<Loja> lojas;

	private List<Vinculacao> vinculacoesSelecionadas;
	private List<Vinculacao> lojasSelecionadas;

	private List<Vinculacao> filteredVinculacoes;
	private List<Loja> filteredLojas;

	private SelectItem selectItem;

	private String nome;

	@ManagedProperty("#{filterService}")
	private FilterService service;

	@PostConstruct
	public void init() {
		vinculacoes = service.createVinculacoes(30);
		lojas = service.createLojas();
	}

	public List<SelectItem> getProdutos() {

		List<Produto> produtos = this.getService().getProdutos();
		List<SelectItem> selectItens = new ArrayList<SelectItem>();

		selectItens.add(new SelectItem(""));

		for (int i = 0; i < produtos.size(); i++) {

			nome = produtos.get(i).getNome();

			selectItem = new SelectItem(nome);
			selectItens.add(selectItem);
		}

		return selectItens;
	}

	public List<SelectItem> getConvenios() {

		List<Convenio> convenios = this.getService().getConvenios();
		List<SelectItem> selectItens = new ArrayList<SelectItem>();

		selectItens.add(new SelectItem(""));

		for (int i = 0; i < convenios.size(); i++) {

			nome = convenios.get(i).getNome();

			selectItem = new SelectItem(nome);
			selectItens.add(selectItem);
		}

		return selectItens;
	}

	public List<SelectItem> getTabelasTaxas() {

		List<TabelaTaxasComissoesEmprestimo> tabelasTaxas = this.getService().getTabelasTaxas();
		List<SelectItem> selectItens = new ArrayList<SelectItem>();

		selectItens.add(new SelectItem(""));

		for (int i = 0; i < tabelasTaxas.size(); i++) {

			nome = tabelasTaxas.get(i).getNome();

			selectItem = new SelectItem(nome);
			selectItens.add(selectItem);
		}

		return selectItens;
	}

	public List<SelectItem> getTabelasTC() {

		List<TabelaTC> tabelasTC = this.getService().getTabelasTC();
		List<SelectItem> selectItens = new ArrayList<SelectItem>();

		selectItens.add(new SelectItem(""));

		for (int i = 0; i < tabelasTC.size(); i++) {

			nome = tabelasTC.get(i).getCodTC();

			selectItem = new SelectItem(nome);
			selectItens.add(selectItem);
		}

		return selectItens;
	}

	public List<SelectItem> getLojasItem() {

		List<Loja> lojas = this.getService().getLojas();
		List<SelectItem> selectItens = new ArrayList<SelectItem>();

		selectItens.add(new SelectItem(""));

		for (int i = 0; i < lojas.size(); i++) {

			nome = lojas.get(i).getNomeFantasia();

			selectItem = new SelectItem(nome);
			selectItens.add(selectItem);
		}

		return selectItens;
	}

	public List<Vinculacao> getVinculacoes() {
		return vinculacoes;
	}

	public void setVinculacoes(List<Vinculacao> vinculacoes) {
		this.vinculacoes = vinculacoes;
	}

	public List<Loja> getLojas() {
		return lojas;
	}

	public void setLojas(List<Loja> lojas) {
		this.lojas = lojas;
	}

	public List<Vinculacao> getVinculacoesSelecionadas() {
		return vinculacoesSelecionadas;
	}

	public void setVinculacoesSelecionadas(
			List<Vinculacao> vinculacoesSelecionadas) {
		this.vinculacoesSelecionadas = vinculacoesSelecionadas;
	}

	public List<Vinculacao> getLojasSelecionadas() {
		return lojasSelecionadas;
	}

	public void setLojasSelecionadas(List<Vinculacao> lojasSelecionadas) {
		this.lojasSelecionadas = lojasSelecionadas;
	}

	public List<Vinculacao> getFilteredVinculacoes() {
		return filteredVinculacoes;
	}

	public void setFilteredVinculacoes(List<Vinculacao> filteredVinculacoes) {
		this.filteredVinculacoes = filteredVinculacoes;
	}

	public List<Loja> getFilteredLojas() {
		return filteredLojas;
	}

	public void setFilteredLojas(List<Loja> filteredLojas) {
		this.filteredLojas = filteredLojas;
	}

	public SelectItem getSelectItem() {
		return selectItem;
	}

	public void setSelectItem(SelectItem selectItem) {
		this.selectItem = selectItem;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public FilterService getService() {
		return service;
	}

	public void setService(FilterService service) {
		this.service = service;
	}

}
